\section{Eloquent}
Laravel 自带的 Eloquent ORM 提供了一个美观、简单的与数据库打交道的 ActiveRecord 实现，每张数据表都对应一个与该表进行交互的“模型”，模型允许你在表中进行数据查询，以及插入、更新、删除等操作。

\subsection{定义模型}
作为开始，让我们创建一个Eloquent模型，模型通常位于app目录下。所有Eloquent模型都继承自Illuminate/Database/Eloquent/Model类。

创建模型实例最简单的办法就是使用Artisan命令make:model：

\begin{lstlisting}
php artisan make:model Article
\end{lstlisting}

该命令执行后，自动创建一个名为Article的类，继承自Model类。内容如下：

\begin{lstlisting}
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    //
}
\end{lstlisting}

注意我们并没有告诉 Eloquent 我们的 Article 模型使用哪张表。默认规则是模型类名的复数作为与其对应的表名，除非在模型类中明确指定了其它名称。所以，在本例中，Eloquent 认为 Article 模型存储的记录在 Articles 表中。

\subsection{新增数据}
\subsubsection{save()方法}
将表中必要的字段赋值后，执行save()方法就可新增数据：
\begin{lstlisting}
$article = new App\Article;
$article->title = "文章标题";
$article->body = "文章内容";
$article->published_at = Carbon\Carbon::now();
$article->save();
\end{lstlisting}

\subsubsection{create()方法}
在使用 create() 方法新增数据之前，需要在对应的模型中声明哪些字段是可变的：

\begin{lstlisting}
class Article extends Model
{
    protected $fillable = [
        'title',
        'body',
        'published_at',
    ];
}
\end{lstlisting}

之后，就可以使用create()方法新增数据了：

\begin{lstlisting}
$article = App\Article::create(['title'=>'New title','body'=>'new body','published_at'=>Carbon\Carbon::now()]);
\end{lstlisting}

\subsection{更新数据}
将表中必要的字段更新后，执行update()或者save()方法都可更新数据：
\begin{lstlisting}
$article->title = "修改后的文章标题";
$article->update();
$article->update('body','修改后的文章内容');
\end{lstlisting}

\subsection{读取数据库数据}
使用all()、find()、where()、get()、first()等等方法可以查询数据库，并取得查询结果。可到官方文档\href{https://laravel.com/docs/5.2/queries}{阅读详细的查询方法}。

\begin{lstlisting}
App\Article::all();   	# 获取所有数据
App\Article::find(1);		# 获取id=1的数据
App\Article::where('title','文章标题')->get(); #获取指定条件的数据
\end{lstlisting}



